import './assets/main.css'
// 结构出createApp
import { createApp } from 'vue'
// 导入跟组件
import App from './App.vue'
// 导入路由
import router from './router'
// 绑定vuex
import store from "./store";
import { createPinia } from 'pinia'

// 导入element和css样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
// 国际化组件
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
const pinia = createPinia()
// 创建一个app实例
const app = createApp(App)

app.use(ElementPlus, {
  locale: zhCn,
})
// 将路由挂载到实例中
app.use(router)
app.use(store)
app.use(pinia)
// 将element挂载到实例中
// app.use(ElementPlus)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
  }
  // 自定义全局指令，用于实现按钮的权限
  // 在绑定元素的 attribute 前
  // 或事件监听器应用前调用
  // created(el, binding, vnode, prevVnode) {
    // 下面会介绍各个参数的细节
  // },
  // 在元素被插入到 DOM 前调用
  // beforeMount(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都挂载完成后调用
  // mounted(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件更新前调用
  // beforeUpdate(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都更新后调用
  // updated(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载前调用
  // beforeUnmount(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载后调用
  // unmounted(el, binding, vnode, prevVnode) {}
  app.directive('jurisdiction', {
    // el：指令绑定到的元素。这可以用于直接操作 DOM。
    // binding：一个对象，包含以下属性。
    // vnode：代表绑定元素的底层 VNode。
    // prevNode：代表之前的渲染中指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。
    mounted(el, binding, vnode, prevVnode) {
      // 先拿到在浏览器中存储的数据
      let loginRole=JSON.parse(localStorage.getItem('login')).role
      if(loginRole !==2){
        el.remove()
      }
      // binding 就是v-jurisdiction ='要传的值'
      // binding.value 就能拿到要传的的值
    //  这样设置完成以后 就可以使用v-jurisdiction来定义全局中 不同权限看到的显示的内容不同
    },
  })
  !(function checkTokenAndRedirectToLogin() {
      const token = localStorage.getItem("token");
      const currentUrl = window.location.href;
      if (!token && !currentUrl.includes("login")) {
        window.location.href = "/login"; // 跳转到登录页
      }
    })()
// 将app挂载到实例中
app.mount('#app')
